import { IAllObject } from "@/types/base";

/*
 * @LastEditors: yuSeen
 * @LastEditTime: 2021-12-27 11:47:55
 */
export type event = 'click' | 'dbClick'
type callback = (row: IAllObject) => void

export interface IColumn {
    //需要映射的key,必填，如果需要自己加工数据的话可以填任意字符串,但一定不要重复，不然会导致插槽混乱,后续可以通过此名称的插槽访问到整行数据。
    // 示例prop为id， <template #id="{scope}">{{scope}}</template>
    prop: string
    label?: string  //列名
    // width与flex同时存在时width影响宽度下限，flex影响宽度上限
    width?: string | number //列宽(固定)
    flex?: number   //同样是列宽(比例)
    class?: string  //类名,若是局部样式则需配合：deep(.myTable)使用，可填写多个类名，以空格分隔
    click?: callback  //单击回调
    dbClick?: callback  //双击回调
}

// 某项的样式
export interface IStyle {
    width?: string
    flex?: number
}

// 样式缓存,用于缓存单元格样式，避免反复计算
export type TStyleMap = Map<string, IStyle>

export type addColFun = (columnProps: IColumn) => any